﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BreukTrainer_EE_.BreukModel
{
    public class BreukContainerEenvoudig : BreukContainer
    {
        /// <summary>
        /// Een waarde die de ondergrens bepaald van elke <see cref="Breuk"/>.
        /// </summary>
        private int ondergrens;
        /// <summary>
        /// Properties voor <see cref="ondergrens"/>.
        /// </summary>
        /// <returns>een integer</returns>
        public int Ondergrens
        {
            get
            {
                return ondergrens;
            }
            set
            {
                ondergrens = value;
            }
        }
        /// <summary>
        /// Een waarde die de bovengrens bepaald van elke <see cref="Breuk"/>.
        /// </summary>
        private int bovengrens;
        /// <summary>
        /// Properties voor <see cref="bovengrens"/>.
        /// </summary>
        /// <returns>een integer</returns>
        public int Bovengrens
        {
            get
            {
                return bovengrens;
            }
            set
            {
                bovengrens = value;
            }
        }

        /// <summary>
        /// Maakt een nieuwe BreukContainer aan met boven en ondergrens.
        /// </summary>
        public BreukContainerEenvoudig(int ondergrens, int bovengrens) : base()
        {
            this.ondergrens = ondergrens;
            this.bovengrens = bovengrens;
        }
        /// <summary>
        /// Overrides Addfunctie van <see cref="BreukContainer"/>.
        /// Voegt een <see cref="Breuk"/> toe aan de List.
        /// </summary>
        /// <exception cref="System.ArgumentOutOfRangeException">Deze exception zal gegooid worden wanneer je <paramref name="teller"/> of <paramref name="noemer"/> niet binnen de boven of ondergrens is.</exception>
        /// <param name="breuk">Een <see cref="Breuk"/>.</param>
        public override void Add(Breuk breuk)
        {
            breuk = breuk.Vereenvoudig(); //dit moet hier blijven want het is een fucntionaliteit die in de opdracht was en is dus verplicht
            if (breuk.Teller<=bovengrens&&breuk.Noemer>=ondergrens&&breuk.Noemer<=bovengrens&&breuk.Teller>=ondergrens)
            {
                base.Add(breuk);
            }
            else {
                throw new ArgumentOutOfRangeException("Dat is geen goed formaat mijn beste (" + breuk.ToString() + "). Gelieve de ondergrens(="+ondergrens+") en bovengrens(="+bovengrens+") te respecteren");
            }
        }
    }
}
